using System;
using Gtk;
using System.IO;
using PMultiEditor;

public partial class MainWindow : Gtk.Window
{
	public MainWindow () : base(Gtk.WindowType.Toplevel)
	{
		Build ();
	}

	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}
	
//	class MiTextView:TextView
//	{
//		public string Nombre{get;set;}
//	}
	
	string NomArchivo(string ruta){
		string[] nombre = ruta.Split('/');
		return nombre[nombre.Length-1];
	}
	
	string Abrir(){
		MiTextView textView = new MiTextView();
		FileChooserDialog fileChooserDialog = new FileChooserDialog("Abrir archivo",this,FileChooserAction.Open,"Cancelar",ResponseType.Cancel,"Abrir",ResponseType.Accept);
		if(fileChooserDialog.Run() == (int)ResponseType.Accept){
<<<<<<< .mine
			//System.IO.StreamReader lectFichero = new System.IO.StreamReader(fileChooserDialog.Filename);
			//textView.BufferText = lectFichero.ReadToEnd();
			textView.Nombre = fileChooserDialog.Filename;
			textView.LeerFichero();
			//lectFichero.Close();
=======
			System.IO.StreamReader lectFichero = new System.IO.StreamReader(fileChooserDialog.Filename);
			textView.BufferText = lectFichero.ReadToEnd();
			lectFichero.Close();
>>>>>>> .r15
			notebook.CurrentPage = notebook.AppendPage(textView,new Label(NomArchivo(fileChooserDialog.Filename)));
		}
		string Archivo = fileChooserDialog.Filename;
		fileChooserDialog.Destroy();
		textView.Nombre = Archivo;
		return Archivo;
	}
	
	void Guardar(string Archivo){
		MiTextView textView = (MiTextView)notebook.CurrentPageWidget;
		if(string.IsNullOrEmpty(Archivo)){
			GuardarComo();
		}else{
			System.IO.StreamWriter salvar = new System.IO.StreamWriter(Archivo);
			salvar.Write(textView.BufferText);
			salvar.Close();
			textView.Nombre = Archivo;
			Label titulo = (Label)notebook.GetTabLabel(notebook.CurrentPageWidget);
			titulo.LabelProp = NomArchivo(Archivo);
		}		
	}
	
	void GuardarComo(){
		FileChooserDialog fileChooserDialog = new FileChooserDialog("Guardar archivo",this,FileChooserAction.Save,"Cancelar",ResponseType.Cancel,"Guardar",ResponseType.Accept);
					
		if(fileChooserDialog.Run() == (int)ResponseType.Accept){
			Guardar(fileChooserDialog.Filename);
		}
		
		fileChooserDialog.Destroy();
	}
	
	void NuevaPestaña(){
		MiTextView textView = new MiTextView();
		textView.Visible = true;
		notebook.AppendPage(textView, new Label("sin título"));
		notebook.NextPage();
	}
	
	void CerrarPestaña(){
		MiTextView textView = new MiTextView();
		MessageDialog dialogo = new MessageDialog(this, DialogFlags.Modal, MessageType.Question,ButtonsType.YesNo,"¿Desea Guardar?");
			ResponseType question = (ResponseType)dialogo.Run();
			 
			if (question == ResponseType.Yes){ 
				dialogo.Destroy();
				Guardar(textView.Nombre);
				notebook.RemovePage(notebook.CurrentPage);
				//Application.Quit();
			} else { 
				dialogo.Destroy();
				notebook.RemovePage(notebook.CurrentPage);
				//Application.Quit();
			}		
	}
	
	protected virtual void OnNewActionActivated (object sender, System.EventArgs e)
	{
		NuevaPestaña();
	}
	
	protected virtual void OnOpenActionActivated (object sender, System.EventArgs e)
	{
		 Abrir();
	}
	
	protected virtual void OnDeleteActionActivated (object sender, System.EventArgs e)
	{
		MiTextView textView = (MiTextView)notebook.CurrentPageWidget;
		if(textView.BufferText == ""){
			notebook.RemovePage(notebook.CurrentPage);
		}else{
			CerrarPestaña();	
		}
	}
	
	protected virtual void OnSaveActionActivated (object sender, System.EventArgs e)
	{
		MiTextView textView = (MiTextView)notebook.CurrentPageWidget;
		Guardar(textView.Nombre);
	}
	
	protected virtual void OnSaveAsActionActivated (object sender, System.EventArgs e)
	{
		GuardarComo();
	}
}
